const fs = require("fs");
const WS = require("koa-websocket");

// const  group1  = require("./group1.ws");
// const  group2  = require("./group2.ws");

// 定义不同的 WebSocket 路由处理函数
const routeHandlers = {
  // "group1": group1,
  // "group2": group2
};

/**
 * 自动化程序，自动注册路由
 */
(function registerRouters() {
  // 1.读取当前文件夹下的所有文件
  const files = fs.readdirSync(__dirname);
  // console.log(files);

  // 2.遍历所有的文件
  for (const file of files) {
    console.log(file);
    // 只用.ws.js结尾的文件
    if (!file.endsWith(".ws.js")) continue;

    // console.log(file.split(".ws.js"));
    const routerName = file.split(".ws.js")[0];

    const wsFun = require("./" + file);

    routeHandlers["/" + routerName] = wsFun;
  }
})();
console.log(routeHandlers);

/**
 * 建立 WebSocket 连接 中间件
 * @param {*} ctx
 * @param {*} next
 */
function handleWebSocketConnection(ctx, next) {
  // 获取请求的URL路径
  const url = ctx.request.url;

  // 根据路由选择对应的处理函数
  const handler = routeHandlers[url];

  if (handler) {
    // 调用对应的处理函数
    handler(ctx, next);
  } else {
    console.log("未找到符合条件的WebSocket路由处理函数");
  }
}

module.exports = function (app) {
  // 将 Koa 应用实例转换为支持 WebSocket 的实例
  const wsApp = WS(app);

  // 建立 WebSocket 连接
  wsApp.ws.use(handleWebSocketConnection);
};
